﻿////////////////////////////////////////////////////////////////////////////
//  Copyright 2009 - 2011 Zach Snow                                       //
////////////////////////////////////////////////////////////////////////////
//  This file is part of WindowsWhere.                                    //
//                                                                        //
//  WindowsWhere is free software: you can redistribute it and/or modify  //
//  it under the terms of the GNU General Public License as published by  //
//  the Free Software Foundation, either version 3 of the License, or     //
//  (at your option) any later version.                                   //
//                                                                        //
//  WindowsWhere is distributed in the hope that it will be useful,       //
//  but WITHOUT ANY WARRANTY; without even the implied warranty of        //
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         //
//  GNU General Public License for more details.                          //
//                                                                        //
//  You should have received a copy of the GNU General Public License     //
//  along with WindowsWhere.  If not, see <http://www.gnu.org/licenses/>. //
////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Text;

namespace WindowsWhere
{
  static class Utilities
  {
    /// <summary>
    /// Extension method to retrieve the Message, and all of the Messages
    /// of all of the the InnerExceptions of a given exception.
    /// </summary>
    /// <param name="e">Exception from which to retrieve message</param>
    /// <returns></returns>
    public static string CompleteMessage(this Exception e)
    {
      StringBuilder s = new StringBuilder();
      s.Append(e.Message);
      e = e.InnerException;
      while(e != null)
      {
        s.Append("\n  ");
        s.Append(e.Message);
        e = e.InnerException;
      }
      return s.ToString();
    }
  }
}
